/**
  ******************************************************************************
  * @file    sd_dev_sh3001.c 
  * @author  SD Electronics xxx
  * @version V1.0
  * @date    xx-xx-xx
  * @brief   xxxxxxxxxxxxxxxxxx.
  ******************************************************************************
  */


/* Includes ------------------------------------------------------------------*/
#include "sd_common.h"

/** 
* @brief  SH3001物理结构体
  */
ST_SH3001_CNT_PHY st_SH3001_cnt_phy = {
    /* SH3001应用层配置定义 */
    {0, 0, 0},
    {0, 0, 0},
}; 
  
/** 
  * @brief  SH3001控制结构体
  */
ST_SH3001_CTRL g_stSH3001Ctrl = 
{                       
    false,
    &st_SH3001_cnt_phy,
};  
/**
  * @}
  */


/** 
  * 函数功能： SH3001打开(SH3001的初始化)
  * 参数说明：
  * 返回说明：
  * 调用范围：
  * 完成时间：
  * 修改时间：
  * 修改原因：
  */
void SDInitSH3001(PST_SH3001_CNT_PHY pstSH3001CntPhy)
{
    /* 用户在这里添加相应SH3001的初始化
    * SH3001初始化的相关参数应包含在 PST_SH3001_CNT_PHY中
    */
    SH3001_init();
    printf("usr: sd SH3001 init.\r\n");
}

/** 
  * 函数功能： SH3001打开(SH3001的初始化)
  * 参数说明：
  * 返回说明：
  * 调用范围：
  * 完成时间：
  * 修改时间：
  * 修改原因：
  */
static long SH3001Open(void *pvHandle, unsigned long ulOption)
{
    PST_DEV_MANAGE pstDevManage = pvHandle;

    long lRet = EN_DEV_CTL_RET_CODE_FAILED;
    if (0 != pstDevManage)
    {
        PST_SH3001_CTRL pstSH3001Ctrl = (PST_SH3001_CTRL)pstDevManage->pvData;
        if(false == pstSH3001Ctrl->bInitFlag)
        {
			/* SH3001驱动初始化----这里添加SH3001的初始化函数 */
            SDInitSH3001(pstSH3001Ctrl->pstSH3001Info);
            pstSH3001Ctrl->bInitFlag = true;
        }
        lRet = EN_DEV_CTL_RET_CODE_SUCCESSED;
    }
    return lRet;
}  

/** 
  * 函数功能： SH3001读
  * 参数说明：
  * 返回说明：
  * 调用范围：
  * 完成时间：
  * 修改时间：
  * 修改原因：
  */
static long SH3001Read(void *pvHandle, unsigned long ulOpertion, unsigned char *pucDataBuf, int* ulDataSize)
{
    PST_DEV_MANAGE pstDevManage = pvHandle;
    long lRet = EN_DEV_CTL_RET_CODE_FAILED;
    if (0 != pstDevManage)
    {
        PST_SH3001_CTRL pstSH3001Ctrl = (PST_SH3001_CTRL)pstDevManage->pvData;
        if(pstSH3001Ctrl->bInitFlag == true)
        {
            switch(ulOpertion)
            {
                case 0:
                SH3001_GetImuData(pstSH3001Ctrl->pstSH3001Info->accData, pstSH3001Ctrl->pstSH3001Info->gyroData);
                break;
                case 1:
                SH3001_GetImuCompData(pstSH3001Ctrl->pstSH3001Info->accData, pstSH3001Ctrl->pstSH3001Info->gyroData);
                break;
                default:
                break;
            }
            lRet = EN_DEV_CTL_RET_CODE_SUCCESSED;
        }
        else
            lRet = EN_DEV_CTL_RET_CODE_FAILED;
        
    }
    return lRet;    
}

/** 
  * 函数功能： SH3001写
  * 参数说明：
  * 返回说明：
  * 调用范围：
  * 完成时间：
  * 修改时间：
  * 修改原因：
  */
static long SH3001Write(void *pvHandle, unsigned long ulOpertion, unsigned char *pucDataBuf, unsigned long ulDataLen)
{
    PST_DEV_MANAGE pstDevManage = pvHandle;
    long lRet = EN_DEV_CTL_RET_CODE_FAILED;
    if (0 != pstDevManage)
    {
        lRet = EN_DEV_CTL_RET_CODE_SUCCESSED;
    }
    return lRet;        
}

/** 
  * 函数功能： SH3001控制
  * 参数说明：
  * 返回说明：
  * 调用范围：
  * 完成时间：
  * 修改时间：
  * 修改原因：
  */
static long SH3001Control (void *pvHandle,unsigned long ulOpertion, unsigned long ulControlCmd, void *pvd)
{
    PST_DEV_MANAGE pstDevManage = pvHandle;
    long lRet = EN_DEV_CTL_RET_CODE_FAILED;
    if (0 != pstDevManage)
    {
        lRet = EN_DEV_CTL_RET_CODE_SUCCESSED;
    }
    return lRet;             
}

/** 
  * 函数功能： SH3001关闭
  * 参数说明：
  * 返回说明：
  * 调用范围：
  * 完成时间：
  * 修改时间：
  * 修改原因：
  */
static long SH3001Close (void *pvHandle)
{
    PST_DEV_MANAGE pstDevManage = pvHandle;
    long lRet = EN_DEV_CTL_RET_CODE_FAILED;
    if (0 != pstDevManage)
    {
        lRet = EN_DEV_CTL_RET_CODE_SUCCESSED;
    }
    return lRet;    
}

/** 
  * 函数功能： SH3001控制管理回调函数
  * 参数说明：
  * 返回说明：
  * 调用范围：
  * 完成时间：
  * 修改时间：
  * 修改原因：
  */
ST_CTR_FUN g_stSH3001CtlFUN = 
{
    SH3001Open,		/* 打开---用于初始化设备管理的时候调用 */
    SH3001Read,		/* 读 */
    SH3001Write,		/* 写 */
    SH3001Control,	/* undefine */
    SH3001Close    	/* 关闭 */
};


/******************* (C) COPYRIGHT 2011 ShenZhenShiding electronics **************************/
